import request from '../utils/request'

// 备份与恢复相关 API，严格按后端接口文档适配
// 文档：c:\Users\HJydd\Desktop\Ground-Station-Storage-Management-System\接口文档.md

export const backupApi = {
  // 1.1 创建备份策略 - POST /backup-strategy
  createStrategy(data) {
    return request({
      url: '/backup-strategy',
      method: 'post',
      data
    })
  },

  // 1.2 查询备份策略详情 - GET /backup-strategy/{id}
  getStrategyDetail(id) {
    return request({
      url: `/backup-strategy/${id}`,
      method: 'get'
    })
  },

  // 已移除：getStrategiesPage（未使用）

  // 1.4 修改备份策略 - PUT /backup-strategy
  updateStrategy(data) {
    return request({
      url: '/backup-strategy',
      method: 'put',
      data
    })
  },

  // 1.5 删除备份策略 - DELETE /backup-strategy/{id}
  deleteStrategy(id) {
    return request({
      url: `/backup-strategy/${id}`,
      method: 'delete'
    })
  },

  // 2.1 根据策略创建备份任务 - POST /backup-info/create-with-strategy
  createTaskWithStrategy(data) {
    return request({
      url: '/backup-info/create-with-strategy',
      method: 'post',
      data
    })
  },

  // 2.2 手动执行策略备份 - POST /backup-info/strategy/{strategyId}/execute
  executeStrategy(strategyId) {
    return request({
      url: `/backup-info/strategy/${strategyId}/execute`,
      method: 'post',
      data: { strategyId }
    })
  },

  // 已移除：getScheduledTasks（未使用）

  // 2.6 获取所有备份策略 - GET /backup-info/strategies
  getAllStrategies() {
    // 后端swagger未提供 /backup-info/strategies，改为分页接口 /backup-strategy/page
    // 为不影响调用方，这里返回分页结果的 records 字段
    return request({
      url: '/backup-strategy/page',
      method: 'get',
      params: { current: 1, size: 100 }
    })
  },

  // 2.7 获取策略关联的备份任务 - GET /backup-info/strategy/{strategyId}/tasks
  getStrategyTasks(strategyId) {
    return request({
      url: `/backup-info/strategy/${strategyId}/tasks`,
      method: 'get'
    })
  },

  // 已移除：executeScheduledTask（未使用）

  // 3. 备份恢复相关接口（按接口文档）
  // 注意：接口文档使用了 `/storage/api/*` 路径。在本项目中，axios 基础路径为 `/api`，
  // 且 devServer 代理会将前端 `/api` 重写为后端 `/storage`。
  // 为了命中后端 `/storage/api/*`，这里的 url 需要写成以 `/api` 开头的二级路径：`/api/backupFiles` 等。

  // 获取备份文件列表 - GET /api/backupFiles
  getBackupFiles() {
    return request({
      url: '/api/backupFiles',
      method: 'get'
    })
  },

  // 获取备份文件信息 - GET /api/backupFileInfo/{filename}
  getBackupFileInfo(filename) {
    return request({
      url: `/api/backupFileInfo/${encodeURIComponent(filename)}`,
      method: 'get'
    })
  },

  // 恢复库 - POST /api/restore
  restoreDatabase(data) {
    return request({
      url: '/api/restore',
      method: 'post',
      data
    })
  },

  // 恢复表 - POST /api/restoreTables
  restoreTables(data) {
    return request({
      url: '/api/restoreTables',
      method: 'post',
      data
    })
  }
}

export default backupApi

